package com.wait.onlinepicturecloud.application.service;

import com.wait.onlinepicturecloud.domain.space.entity.Space;
import com.wait.onlinepicturecloud.domain.user.entity.User;
import com.wait.onlinepicturecloud.interfaces.dto.space.analyze.*;
import com.wait.onlinepicturecloud.interfaces.vo.space.analyze.*;

import java.util.List;

/**
 * @author with葡萄成熟时
 * @version 1.0
 */
public interface SpaceAnalyzeApplicationService {
    /**
     * description 校验空间分析权限
     * author Wait葡萄成熟时
     */
    void checkSpaceAnalyzeAuth(SpaceAnalyzeRequest spaceAnalyzeRequest, User loginUser);
    /**
     * description 获取空间使用分析数据
     * author Wait葡萄成熟时
     */
    SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceUsageAnalyzeRequest spaceUsageAnalyzeRequest, User loginUser);
    /**
     * description 按照分类分组查询图片表的数据
     * author Wait葡萄成熟时
     */
    List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser);
    /**
     * description 统计每个标签的图片数量，并按使用次数降序排序
     * author Wait葡萄成熟时
     */
    List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, User loginUser);
    /**
     * description 空间图片大小分析
     * author Wait葡萄成熟时
     */
    List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, User loginUser);
    /**
     * description 基于图片的创建时间维度统计用户的上传行为，并按照时间升序排序
     * author Wait葡萄成熟时
     */
    List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, User loginUser);

    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, User loginUser);
}
